package com.yuncheng.spcyApi.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Map;
import java.util.regex.Pattern;

/**
 * @author hua
 */
public class StringReplaceMapUtils {

    private static final Logger log = LoggerFactory.getLogger(StringReplaceMapUtils.class);

    /**
     * 使用Map中的键值对替换字符串中的匹配项。
     * 注意：这里假设Map的键是简单的字符串，不包含正则表达式特殊字符。
     *
     * @param sourceStr 要处理的字符串
     * @param replacements 包含替换规则的Map（键为要替换的字符串，值为替换后的字符串）
     * @return 替换后的字符串
     */
    public static String replaceWithMap(String sourceStr, Map<String, String> replacements) {
        try {
            if (replacements == null || replacements.isEmpty()){
                return sourceStr;
            }

            String input = sourceStr;
            // 遍历Map中的每个键值对
            for (Map.Entry<String, String> entry : replacements.entrySet()) {
                String key = entry.getKey();
                String value = entry.getValue();

                // 使用正则表达式替换字符串中的匹配项
                // 注意：这里直接使用key作为模式，如果key包含特殊字符，则可能需要转义
                input = input.replaceAll(Pattern.quote(key), value);
            }

            return input;

        }catch (Exception e){
            log.error("使用Map中的键值对替换字符串中的匹配项-错误：{}", e.getMessage());
            return sourceStr;
        }

    }

}
